package br.gov.mi.corporativo.dominio.comum;

// default package
// Generated 12/11/2014 10:19:36 by Hibernate Tools 4.0.0

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Immutable;

/**
 * PessoaDocumento generated by hbm2java
 */
@Entity @Immutable
@Table(schema="DES_COMUM",name = "PESSOA_DOCUMENTO")
public final class PessoaDocumento implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -658481231620657664L;
	
	@Id
	@Column(name = "ID_PESSOA_DOCUMENTO", unique = true, nullable = false, precision = 22, scale = 0)
	private Long idPessoaDocumento;
	
	@ManyToOne
	@JoinColumn(name = "ID_MUNICIPIO")
	private Municipio municipio;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_TIPO_DOCUMENTO", nullable = false)
	private TipoDocumento tipoDocumento;
	
	@ManyToOne
	@JoinColumn(name = "ID_UF")
	private Uf uf;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID_PESSOA", nullable = false)
	private Pessoa pessoa;
	
	@Column(name = "NR_DOCUMENTO", nullable = false, length = 30)
	private String nrDocumento;
	
	@Column(name = "NR_SECAO", precision = 5, scale = 0)
	private Integer nrSecao;
	
	@Column(name = "NR_ZONA", precision = 5, scale = 0)
	private Integer nrZona;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "DT_EMISSAO", length = 7)
	private Date dtEmissao;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "DT_VALIDADE", length = 7)
	private Date dtValidade;
	
	@Column(name = "ST_REGISTRO", nullable = false, length = 1)
	private String stRegistro;

	public PessoaDocumento() {
	}

	public PessoaDocumento(Long idPessoaDocumento,
			TipoDocumento tipoDocumento, Pessoa pessoa, String nrDocumento,
			String stRegistro) {
		this.idPessoaDocumento = idPessoaDocumento;
		this.tipoDocumento = tipoDocumento;
		this.pessoa = pessoa;
		this.nrDocumento = nrDocumento;
		this.stRegistro = stRegistro;
	}

	public PessoaDocumento(Long idPessoaDocumento, Municipio municipio,
			TipoDocumento tipoDocumento, Uf uf, Pessoa pessoa,
			String nrDocumento, Integer nrSecao, Integer nrZona,
			Date dtEmissao, Date dtValidade, String stRegistro) {
		this.idPessoaDocumento = idPessoaDocumento;
		this.municipio = municipio;
		this.tipoDocumento = tipoDocumento;
		this.uf = uf;
		this.pessoa = pessoa;
		this.nrDocumento = nrDocumento;
		this.nrSecao = nrSecao;
		this.nrZona = nrZona;
		this.dtEmissao = dtEmissao;
		this.dtValidade = dtValidade;
		this.stRegistro = stRegistro;
	}

	
	public Long getIdPessoaDocumento() {
		return this.idPessoaDocumento;
	}

	
	public Municipio getMunicipio() {
		return this.municipio;
	}

	
	public TipoDocumento getTipoDocumento() {
		return this.tipoDocumento;
	}

	
	public Uf getUf() {
		return this.uf;
	}

	
	public Pessoa getPessoa() {
		return this.pessoa;
	}

	
	public String getNrDocumento() {
		return this.nrDocumento;
	}

	
	public Integer getNrSecao() {
		return this.nrSecao;
	}

	
	public Integer getNrZona() {
		return this.nrZona;
	}

	
	public Date getDtEmissao() {
		return this.dtEmissao;
	}

	
	public Date getDtValidade() {
		return this.dtValidade;
	}

	
	public String getStRegistro() {
		return this.stRegistro;
	}

}
